// 防抖函数
// 包装器，返回一个防抖函数

function fangDou(fn, delay) {
  let timer = null;
  return function (...args) {
    let ctx = this;
    // console.log(timer);
    if (timer) {
      clearTimeout(timer);
      timer = null;
    }
    timer = setTimeout(() => {
      fn.apply(ctx, args);
    }, delay);
  };
}

function jieLiu(fn, delay) {
  let timer = null;
  return function (...args) {
    let ctx = this;
    // console.log(timer);
    if (timer === null) {
      fn.apply(ctx, args);
      timer = setTimeout(() => {
        clearTimeout(timer);
        timer = null;
      }, delay);
    }
  };
}
// 被包装的函数
function hello(name) {
  console.log("hello " + name);
}
// 包装后的函数
const fangDouHello = fangDou(hello, 3000);
const jieLiuHello = jieLiu(hello, 3000);

// 使用新的函数
setInterval(() => {
  // fangDouHello("fff");
  jieLiuHello("ggg");
}, 1000);
